using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;


namespace FoundationLib.Ifc.Domain.Rules 
{
	/// <summary>
	/// Provides a simple interface for domain rules
	/// </summary>
	public interface IRule   
	{
		/// <summary>
		/// Gets all member names affected by this business rule
		/// </summary>
		string[] AffectedMembers
		{
			get;
		}

		/// <summary>
		/// Gets the rule identifier
		/// </summary>
		string Id
		{
			get;
		}

		/// <summary>
		/// Gets a value indicating whether the domain object complies with the rule
		/// </summary>
		bool IsValid
		{
			get;
		}
	}

}